package com.yzq.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类
 */
public class MD5Util {

    private static final String SALT = "yzq";
    private static final String ALGORITHM = "MD5";

    /**
     * 加密字符串（拼接盐值后MD5）
     * @param plainText 明文
     * @return 加密后的字符串（32位小写MD5）
     */
    public static String encrypt(String plainText) {
        try {
            // 拼接盐值
            String saltedText = plainText + SALT;

            // 获取MD5消息摘要
            MessageDigest md = MessageDigest.getInstance(ALGORITHM);

            // 计算摘要
            byte[] digest = md.digest(saltedText.getBytes());

            // 将字节数组转换为十六进制字符串
            StringBuilder hexString = new StringBuilder();
            for (byte b : digest) {
                String hex = String.format("%02x", b);
                hexString.append(hex);
            }

            return hexString.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5算法不可用", e);
        }
    }

    /**
     * 校验密码是否匹配
     * @param plainText 明文密码
     * @param encryptedText 加密后的密码
     * @return 是否匹配
     */
    public static boolean verify(String plainText, String encryptedText) {
        String encryptedPlainText = encrypt(plainText);
        return encryptedPlainText.equals(encryptedText);
    }
}